<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // var list = [
    //     ["张三", 55, 66, 77], 
    //     ["李四", 67, 89, 90], 
    //     ["王五", 96, 50, 87],
    // ]

    // 数组:一般用于存放一组相同类型的数据

    // 对象: 对一个或一类事物特征(属性)和行为(方法)的描述

    // 如何创建对象
    // (1) 字面量创建(快捷创建)
    var zhang = {
        // 属性(健值是非函数类型 => 数据)
        name: "张三",
        chinese: "55",
        math: 66,
        english: 77,
        // 方法 (健值是一个函数)
        sum:function(){
            return zhang.chinese + zhang.math + zhang.english;
        }
    }
    console.log(zhang);

    // (2) 构造函数创建 => 官方提供专门创建对象的方法 Object
    var zhang = new Object({
        // 属性(健值是非函数类型 => 数据)
        name: "张三",
        chinese: "55",
        math: 66,
        english: 77,
        // 方法 (健值是一个函数)
        sum:function(){
            return zhang.chinese + zhang.math + zhang.english;
        },
    })
    console.log(zhang);


    /* 
    
        对象的特性:
        (1) 对象是以键值对(key:value)的形式存在 => 键名(key 属性名(字符串)) 健值(属性值(任意类型 => 属性和方法))
        (2) 对应键名取值和赋值(排名不分先后)
        语法: 点语法   =>  对象.属性名  => 取值方便,但是键名必须是对象中存在的,不能点变量名
              中括号语法  => 对象["属性名"]    优点: 中括号语法可以配合变量一起使用

            对应键名取一个不存在的属性,返回undefined
            对应键名赋一个不存在的属性,新增该属性到对象中 (有就覆盖,没有就新增)

        (3) 循环遍历 (for...in 遍历)


        注意: 点的前面一般是一个对象
    
    
    */
    

    


    // 点语法(取值)
    console.log(zhang.name);  // zhang["name"]
    // console.log(zhang.chinese);
    // console.log(zhang.math);
    // console.log(zhang.english);
    // console.log(zhang.class);

    // 点语法(赋值)
    // zhang.name = "李四";
    // zhang.chinese = 77;
    // zhang.math = 89;
    // zhang.english = 100;
    // zhang.class = "2308";
    // console.log(zhang);


    // 中括号语法(取值 => 键名必须要是字符串类型)
    // console.log(zhang["name"]);
    // console.log(zhang["chinese"]);
    // console.log(zhang["math"]);
    // console.log(zhang["english"]);
    // console.log(zhang["class"]);

    // zhang["name"] = "李四"
    // zhang["chinese"] = 99;
    // console.log(zhang);

    // 循环遍历  => 返回对象的键名
    // for(var key in zhang){  
    //     console.log(key,zhang[key]); // "name"  zhang["name"]
    // }


    // for...of ES6新增,常用于遍历 数组 字符串 伪数组 可以遍历结构(有下标0-length-1)
    // for(var val of zhang){  
    //     console.log(val);
    // }



    


  






</script>

</html>